package fucai.com.fucai.db.dao.imple;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import fucai.com.fucai.AppBase;
import fucai.com.fucai.db.FuCaiNumber;
import fucai.com.fucai.db.dao.NumberDao;

/**
 * @说 明：这是实现类
 * @项目名称：fucai
 * @包 名： fucai.com.fucai.db.dao.imple
 * @类 名： Fucai
 * @创 建人： chenshuangniu
 * @创建时间：2015/11/29 20:57
 * @版 本：v1.0
 * @修 改人：
 * @修改时间：
 * @修改备注：
 */

public class NumberDaoImpl implements NumberDao {
    private DbUtils db;

    public NumberDaoImpl() {
        this.db = AppBase.db;
    }

    @Override
    public void save(FuCaiNumber number) {
        try {
            db.save(number);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void createDb(Class t) {
        try {
            db.createTableIfNotExist(t);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    @Override
    public List<FuCaiNumber> findAllData() {
        List<FuCaiNumber> fuCaiNumbers = null;
        try {
            fuCaiNumbers = db.findAll(FuCaiNumber.class);
        } catch (DbException e) {
            e.printStackTrace();
        }

        return fuCaiNumbers;
    }

    @Override
    public void closeDb() {
        db.close();
    }

    /**
     * 根据数量查询
     *
     * @param limt
     * @return 这里查询还是要全部取出来 因为数据库存放的数据是从上到下异常增大的 查询是有时从头来的
     */
    @Override
    public List<FuCaiNumber> findLimt(int limt) {
        List<FuCaiNumber> fuCaiNumbers = null;
        try {
            //    fuCaiNumbers = db.findAll(Selector.from(FuCaiNumber.class).where(WhereBuilder.b()).limit(Integer.parseInt(limt)));
            fuCaiNumbers = db.findAll(FuCaiNumber.class);
        } catch (DbException e) {
            e.printStackTrace();
        }
        if (limt > fuCaiNumbers.size()) {
            limt = fuCaiNumbers.size();
        }
        Collections.reverse(fuCaiNumbers);
        List<FuCaiNumber> fu = new ArrayList<>();
        for (int i = 0; i < limt; i++) {
            FuCaiNumber f = fuCaiNumbers.get(i);
            fu.add(f);
        }
        return fu;
    }

    @Override
    public FuCaiNumber findFrist() {
        List<FuCaiNumber> fuCaiNumber = null;
        try {
            fuCaiNumber = db.findAll(FuCaiNumber.class);
        } catch (DbException e) {
            e.printStackTrace();
        }
        if (fuCaiNumber.size() > 0) {
            return fuCaiNumber.get(fuCaiNumber.size() - 1);
        } else {
            FuCaiNumber fu = new FuCaiNumber();
            fu.setIssue("99999");
            return fu;
        }
    }

}
